#ifndef _CLIENT_H_
#define _CLIENT_H_

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <pthread.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

#define EXIT_MASK "exit"             // 退出
#define PRIVATE_CHAT "P_Chat"        // 私聊
#define WE_CHAT "W_Chat"             // 群聊
#define SHOW_WEATHER "S_Weat"        // 天气
#define SHOW_ONLINE_CLI "ONLINE_Cli" // 显示在线
#define IP_LEN 16                    // IP地址最大长度
#define MSG_MAX_LEN 1024             // 消息最大长度

typedef struct IpNode
{
    char ip[IP_LEN]; // 存储IP地址
    struct IpNode *next;
} IpNode, *IpList;

int client();
void show_Menu();
void *Send(void *arg);
void *Recv_server(void *arg);
bool GroupChat_Task(int *cli_fd);
bool PrivateChat_Task(int *cli_fd);
void weather_print(char *weather_msg);

IpList InitIpList();
void AddIpToIpList(IpList *head, const char *ip);
void PrintIpList(IpList head);
void FreeIpList(IpList *head);
IpNode *FindIpInList(IpList head, const char *ip);

#endif